// 多态:父类型的引用指向了子类型的对象,不同类型的对象针对相同的方法,产生不同的行为
;
(() => {
    // 定义一个父类
    class Animal {
        constructor(name) {
            // 更新属性值
            this.name = name;
        }
        //实例方法
        run(distance = 0) {
            console.log(`跑了${distance}米${this.name}`);
        }
    }
    // 定义一个子类
    class Dog extends Animal {
        // 构造函数
        constructor(name) {
            super(name);
        }
        run(distance = 10) {
            console.log(`跑了${distance}米${this.name}`);
        }
    }
    // 定义一个子类
    class Pig extends Animal {
        // 构造函数
        constructor(name) {
            super(name);
        }
        run(distance = 20) {
            console.log(`跑了${distance}米${this.name}`);
        }
    }
    // 实例化父类对象
    const ani = new Animal('动物');
    ani.run();
    // 实例化子类对象
    const dog = new Dog('狗');
    dog.run();
    const pig = new Pig('猪');
    pig.run();
    console.log('==================================');
    const dog1 = new Dog('小狗');
    dog1.run();
    const pig1 = new Pig('小猪');
    pig1.run();
    function showRun(ani) {
        ani.run();
    }
    showRun(dog1);
    showRun(pig1);
})();
